package com.yoyo.itravel.utils;

import sun.misc.BASE64Decoder;

import java.io.IOException;
import java.util.UUID;

/**
 * @author HZX
 * @Description 字符串工具类
 * @date 2020年4月8日 下午11:34:43
 */
public class StringUtils {
    /**
     * Description 私有化构造方法
     */
    private StringUtils() {

    }

    /**
     * Description 判断字符串是否为空
     *
     * @param strs
     * @return
     */
    public static boolean isEmpty(String... strs) {
        if (strs == null) {
            return true;
        }
        // 遍历
        for (String str : strs) {
            if (str == null || str.trim().length() == 0) {
                return true;
            }
        }
        return false;
    }

    /**
     * Description 判断字符串是否为空
     *
     * @param str
     * @return
     */
    public static boolean isEmpty(String str) {
        return str == null || "".equals(str.trim());
    }

    /**
     * @return
     * @Description 获得随机UUID
     */
    public static String getRandomUUID() {
        return UUID.randomUUID().toString().replace("-", "");
    }

    /**
     * @param
     * @return tring
     * @Description 生成6位随机数验证码
     */
    public static String getRandomVerifyCode() {
        String vcode = "";
        for (int i = 0; i < 6; i++) {
            vcode = vcode + (int) (Math.random() * 10);
        }
        return vcode;
    }

    /**
     * @param str
     * @return boolean
     * @Description 判断字符串是否为纯数字
     */
    public static boolean isDigital(String str) {
        if (isEmpty(str)) {
            return false;
        }
        for (int i = 0; i < str.length(); i++) {
            if (!Character.isDigit(str.charAt(i))) {
                return false;
            }
        }
        return true;
    }

    /**
     * @param agent
     * @return
     * @Desciption 获取浏览器版本信息
     */
    public static String getBrowserName(String agent) {
        if (agent.indexOf("msie 7") > 0) {
            return "ie7";
        } else if (agent.indexOf("msie 8") > 0) {
            return "ie8";
        } else if (agent.indexOf("msie 9") > 0) {
            return "ie9";
        } else if (agent.indexOf("msie 10") > 0) {
            return "ie10";
        } else if (agent.indexOf("msie") > 0) {
            return "ie";
        } else if (agent.indexOf("opera") > 0) {
            return "opera";
        } else if (agent.indexOf("opera") > 0) {
            return "opera";
        } else if (agent.indexOf("firefox") > 0) {
            return "firefox";
        } else if (agent.indexOf("webkit") > 0) {
            return "webkit";
        } else if (agent.indexOf("chrome") > 0) {
            return "chrome";
        } else if (agent.indexOf("gecko") > 0 && agent.indexOf("rv:11") > 0) {
            return "ie11";
        } else {
            return "Others";
        }
    }

    /**
     * @Description 将Base64类型的字符串转为字节数组
     *
     * @param base64Str
     * @return byte[]
     */
    public static byte[] parseBase64ToBytes(String base64Str) throws IOException {
        byte[] bytes = null;
        if (isEmpty(base64Str)) {
            return null;
        }
        // 判断是否为上传的图片
        if (base64Str.startsWith("....
            String base64Data = base64Str.split(",")[1];
            /** 解码成字节数组 **/
            BASE64Decoder decoder = new BASE64Decoder();
            bytes = decoder.decodeBuffer(base64Data);
            for (int i = 0; i < bytes.length; ++i) {
                if (bytes[i] < 0) {// 调整异常数据
                    bytes[i] += 256;
                }
            }
        }
        return bytes;
    }

}
